package com.bdqn.ch03.SZ.sz3.jdk;

import org.apache.log4j.Logger;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

/**
 *  通过 MessageAgency 接口定义debug的 代理规则
 *
 * @aurhor Administrator  whs
 * @since 2024/7/8
 */
public class MessageAgency implements InvocationHandler {

    Logger logger = Logger.getLogger(MessageAgency.class);

    /**
     * 被代理的目标对象
     */
    private Object target ;
    public void setTarget(Object target) {
        this.target = target;
    }

    /**
     * 为被代理的接口方法定义的代理业务规则
     * @param proxy 正在执行下面 invoke方法的代理对象
     * @param method 正在被调用的接口方法（调用的是真实主题即 接口实现类中的方法 也被叫被代理的目标方法）
     * @param args  传递给接口方法的参数（即传递给接口实现类中方法的参数）
     * @return
     */
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {

        Object feedback = method.invoke(target, args);
        weather();
        mood();
        return "现在是2024年7月8日 "+feedback+" 噜噜噜";
    }

    /**
     * 天气方法
     */
    public void weather(){
        logger.debug("今天天气真好，天空很蔚蓝");
        logger.debug("就是热的有点遭不住了");
    }

    /**
     * 心情方法
     */
    public void mood(){
        logger.debug("今天心情蛮好~");
        logger.debug("又是开心的一天~");
    }



}
